Andrew, Some comments on comments: (1) John is right about tabs and formfeeds, and I have modified the program accordingly. Also, same for #define on buffer size. (2) The idiot that thought up signed chars will be promptly hanged if I ever become dictator. This is the same kind of nonsense as INETGER*2 versus INTEGER*4 in old Fortran programs, namely, that it is better to save a byte than to save a brain cell. I always use the compiler switch that forces unsigned chars and thus never worry about the issue. Imagine, if you will, declaring all string variables as "unsigned char" to accommodate values > 127. Alas, there is nary an "unsigned" in STRING.H, and I am thus forced to write the ludicrous strlen( (char *) (unsigned_char_ptr) ) to keep the compiler quiet. This is unnatural and should be forbidden by all tenets of programming decency. ( Goodness! There's a soap box at my feet-- imagine that! ) (3) As for line size, using the program as written with mono-spaced Courier, anything over 80 chars will be truncated on the page. This restriction could be removed, but would complicate the program, and a general-case solution that is not sensitive to font size or spacing leads to word-wrap algorithms and fairly complex PS code. My feeling is that this would make the article less useful as a general introduction to PostScript. As written, any file that can be displayed in the width of an 80-column monitor can be printed. (4) Finally, the last "showpage" occurs at end-of-file, and thus a terminating is not generally necessary. However, I have adding a terminating newline just to be safe. (The one thing you can depemd on in this business is that you cannot depend on anything.) Marv Luse.